delim	[ \t]
ws	{delim}+
digito	[0-9]
caracter [a-z]
alpha {digito}|{caracter}
ID {caracter}{alpha}*
DECLS {ID}{LISTAID}";"
LISTAID {TIPO}|(", "{ID})+{TIPO}
TIPO ":CADEIA"|":INTEIRO"
IntValue ([0-9])+
StrValue \".*\" 
num	{IntValue}
LABEL [A-Z]*":"


%{
	#include "globals.h"
%}

%%
"VARIAVEIS" { return TVARIAVEIS; }

{ID}				{ 
	yylval.strval = strdup(yytext);
	return TID; 
}

","					{ return TVIRGULA; }
":"					{ return TDP; }
"INTEIRO"   { return TINTEIRO; }
"CADEIA"		{ return TCADEIA; }
"("					{ return TAbreP; }
")"					{ return TFechaP; }
"SE"				{ return TSE; }
"SENAO"			{ reducing_else = 1; return TSENAO; }
"ENQUANTO"	{ return TENQUANTO; }
"ENTAO"			{ return TENTAO; }
"IMPRIME"		{ return TIMPRIME; }
"INICIO"		{ return TINICIO; }
"FIM"				{ return TFIM; }
"LEIA"			{ return TLEIA; }
"="				  {	return TATRIB; }
";"					{ return TPV; }
"\""				{ return TASPAS; }
">"					{ return TMAIOR; }
"<"					{ return TMENOR; }
">="				{ return TMAIORIGUAL; }
"<="				{ return TMENORIGUAL; }
"=="				{	return TIGUAL; }
"||"				{ return TOU; }
"&&"				{ return TAND; }
"+"					{ return TADD; }
"-"					{ return TSUB; }
"*"					{ return TMULT; }
"/"					{ return TDIV; }
"!"					{ return TNOT; }
{LABEL}		{
							yylval.strval = strdup(yytext);
							return TLABEL;
						}

{IntValue}  { 
							yylval.strval = strdup(yytext);
							return TIntValue; 								
						}

{StrValue}  { 
							return TStrValue; 
						}
{ws}	{}
